package org.abluedog.mixin.accessor;

import net.minecraft.entity.EntityDimensions;
import net.minecraft.entity.EntityPose;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.damage.DamageSource;
import net.minecraft.sound.SoundEvent;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
import org.spongepowered.asm.mixin.gen.Invoker;

@Mixin(LivingEntity.class)
public interface LivingEntityAccessor {
    @Accessor("jumping")
    boolean isJumping();

    @Invoker("tickActiveItemStack")
    void callTickActiveItemStack();

    @Invoker("getHurtSound")
    SoundEvent callGetHurtSound(DamageSource source);

    @Invoker("getDeathSound")
    SoundEvent callGetDeathSound();

    @Invoker("playBlockFallSound")
    void callPlayBlockFallSound();

    @Invoker("computeFallDamage")
    int callComputeFallDamage(float fallDistance, float damageMultiplier);

    @Invoker("getSoundVolume")
    float callGetSoundVolume();

    @Invoker("getSoundPitch")
    float callGetSoundPitch();

    @Invoker("setLivingFlag")
    void callSetLivingFlag(int mask, boolean value);
}
